Modern network systems suffer from network congestion during periods of high use. When network congestion overwhelms the network, the network suffers from congestion collapse. In this state, the network is unusable for real-time data traffic. Modern networks have many methods thr controlling the flow of data across networks to alleviate network congestion. The Transmission Control Protocol (“TCP”) limits the amount of information that has been sent, but not acknowledged, during any period of time. This information falls under the congestion window. When the round trip time decreases. TCP can increase the amount of information in the congestion window. The mechanisms for this are defined by the Internet Engineering Task Force (“IETF”). User Datagram Protocol (“UDP”) and other protocols that are used for real-time streaming applications have other methods for handling network congestion based on round trip time.
Although network congestion is a primary contributor to decreased quality of service for streaming media, unreliable communication mediums are another factor impeding quality of service over real world networks. Fortunately, using error correction code technology is one such solution that can increase reliability by sacrificing bandwidth.
Error correcting codes ensure reliable communication through noisy channels by adding redundancy to digital information prior to transmission. In essence they are a protection mechanism. Error correcting codes can be classified as either block codes or tree codes depending on whether they do not require memory (i.e., block codes) or if they do (i.e. tree codes). While there are several block codes in use today such as Bose-Chaudhuri-Hocquenghem (BCH) codes, Reed-Solomon codes, and Low Density Parity Check (LDPC) codes, LDPC codes achieve the lowest bit error rates using soft-decision decoding. In the prior art, as shown in FIG. 1, an input codeword 10 of a data stream to be transmitted is inputted into a block encoder 20, the output of which is transmitted through a network 30. An example of network 30 is a wide area network, such as the Internet. That output is inputted into a block decoder 40, which generates an output codeword 50.
The primary challenges with implementing LDPC codes are finding an LDPC code that has a low error floor. LDPC codes that contain short cycles in their trellis representation do not achieve low error floors. Ideally, the interconnectedness is what allows LDPC codes to achieve higher reliability for individual bits because the LPDC codes can base the reliability of the individual bit on multiple other bits that are directly connected to it. Bits that are further away do have an impact, which is taken into account through the iterative decoding process.
Disadvantages with using LDPC codes include the following. First, LDPC codes require fixed length input sources. Second, they require re-encoding, if the information bits change.